package com.zhixi.principle.liskovsubstitutionprinciple;

import com.zhixi.principle.liskovsubstitutionprinciple.operation.Handgun;
import com.zhixi.principle.liskovsubstitutionprinciple.operation.Rifle;
import com.zhixi.principle.liskovsubstitutionprinciple.operation.Soldier;

/**
 * 里氏替换原则：用李四替换张三，俗称张三原则（瞎扯淡）
 *
 *  1、代码共享
 *  2、提高代码的重用性
 *  3、提高代码的可扩展性
 *  4、提高产品或项目的开放性
 *  5、降低代码的灵活性
 *
 *  如果 A 类要实现 B 类中的某一个方法，尽量把这个方法抽成一个接口，然后 A 和 B 同时实现这个接口
 *  而不是 A 类继承 B 类，重写方法
 *
 * @作者 ShuHaoNan
 * @邮箱 shuhaonan1@gmail.com
 * @时间 2020/11/14 17:19
 */
public class LiskovSubstitutionPrinciple {

    public static void main(String[] args) {
        Soldier liSi = new Soldier();
        liSi.setGun(new Rifle());
        liSi.killEnemy();

        liSi.setGun(new Handgun());
        liSi.killEnemy();
    }

}
